package com.yzr.common.util;

import com.yzr.common.exception.BaseException;
import com.yzr.common.exception.IllegalFileException;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;

import java.io.File;
import java.util.List;
import java.util.Objects;

/**
 * 校验类
 *
 * @author yx-0173
 */
public class ParamCheck {
    /**
     * 校验对象是否为空
     *
     * @param object  接收Object类型参数
     * @param message 接受描述信息参数
     * @throws com.yzr.common.exception.BaseException 自定义异常
     */
    public static void getArrayCheck(Object[] object, String message) throws BaseException {
        if (object == null || object.length <= 0) {
            throw new BaseException(message);
        }
    }

    /**
     * 校验文件是否存证
     *
     * @param file    接收file类型参数
     * @param message 接受描述信息参数
     * @throws IllegalFileException 文件异常
     */
    public static void getFileCheck(File file, String message) throws IllegalFileException {
        if (file == null || !file.exists()) {
            throw new IllegalFileException("文件不存在");
        }
    }

    /**
     * 校验对象是否为空
     *
     * @param object  接收Object类型参数
     * @param message 接受描述信息参数
     * @throws BaseException 自定义异常
     */
    public static void getEntityCheck(Object object, String message) throws BaseException {
        if (ObjectUtils.isEmpty(object)) {
            throw new BaseException(message);
        }
    }

    /**
     * 校验对象是否为空
     *
     * @param integer 接收integer类型参数
     * @param message 接受描述信息参数
     * @throws BaseException 自定义异常
     */
    public static void getIntegerCheck(Integer integer, String message) throws BaseException {
        if (Objects.isNull(integer) || integer.equals(0)) {
            throw new BaseException(message);
        }
    }

    /**
     * 校验对象是否为空
     *
     * @param string  接收string类型参数
     * @param message 接受描述信息参数
     * @throws BaseException 自定义异常
     */
    public static void getStringCheck(String string, String message) throws BaseException {
        if (string == null || "".equals(string)) {
            throw new BaseException(message);
        }
    }

    /**
     * 校验集合是否为空
     *
     * @param list    接收集合
     * @param message 接受描述信息参数
     * @throws BaseException 自定义异常
     */
    public static void getListCheck(List<?> list, String message) throws BaseException {
        if (CollectionUtils.isEmpty(list)) {
            throw new BaseException(message);
        }
    }

    /**
     * 校验Long类型是否为空
     *
     * @param num     接收long类型参数
     * @param message 接受描述信息参数
     * @throws BaseException 自定义异常
     */
    public static void getLongCheck(Long num, String message) throws BaseException {
        if (num <= 0) {
            throw new BaseException(message);
        }
    }

    /**
     * 校验boolean类型是否为空
     *
     * @param type    接收布尔类型参数
     * @param message 接受描述信息参数
     * @throws BaseException 自定义异常
     */
    public static void getIsDelete(Boolean type, String message) throws BaseException {
        if (type) {
            throw new BaseException(message);
        }
    }
}
